#include <iostream>
#include "queuefun.h"
using namespace std;

// 队列初始化
void init(queue &q)
{
  q.rear = 0; // 队尾，指向下一个元素要添加进的位置
  q.front = 0; // 记录队列中，第一个元素的位置
}

// 元素进队
bool enqueue(queue &q, int x)
{
  // 如果队满，则进队失败
  if ((q.rear + 1) % maxsize == q.front)
    return false;
  
  // 添加元素
  q.data[q.rear] = x;
  
  // 更新队尾位置
  q.rear = (q.rear + 1) % maxsize;
  
  // 进队成功
  return true;
}

// 元素出队
int dequeue(queue &q) 
{
  // 如果队空，则出队失败
  if (q.rear == q.front)
    return -100;
  
  // 记录队头元素
  int x = q.data[q.front];
  
  // 更新队头元素位置
  q.front = (q.front + 1) % maxsize;
  
  // 返回数据
  return x;
}
